package servlets;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

/*
 * 对于request的getSession()的用法：
 *  一般情况下，若要向Session中写入数据，则需使用getSession(true)，即getSession()方法。
 *  意义是，有老的用老的，没老的建新的。
 *  若要从Session中读取数据，则需要使用getSession(false)。
 *  意义是，有老的用老，没老的返回null。因为要读取数据，只有老的Session中才有可能存在你要查找的数据
 *  新建的Session中是不可能有这些数据的。
 */
public class SomeServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //获取用户提交参数
        String username = req.getParameter("username");

        //将参数放入request域
        req.setAttribute("user",username);

        //获取Session对象
        HttpSession session = req.getSession();

        //使session失效，但失效的Session并不为nulll
        session.invalidate();
        System.out.println("session = "+session);

        //向Session域中写入属性
        session.setAttribute("username",username);

        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.println("SomeServlet: "+username);
        writer.println("Someservlet: "+session);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        doGet(req,resp);
    }
}
